package cn.lunkr.sdkdemo.util;

import android.app.Application;
import android.content.Intent;
import android.text.TextUtils;

import java.util.concurrent.atomic.AtomicBoolean;

import cn.lunkr.base.mgr.MeManager;
import cn.lunkr.base.open.Manipulator;
import cn.lunkr.base.sp.PublicSPUtil;
import cn.lunkr.base.util.AppUtils;
import cn.lunkr.base.util.LogUtil;
import cn.lunkr.mailui.ui.MailsActivity;
import cn.lunkr.oauthui.ui.SSOActivity;
import cn.lunkr.oauthui.ui.StartActivity3;
import cn.lunkr.sdkdemo.BuildConfig;
import cn.lunkr.sdkdemo.folder.DrawerMainActivity;
import cn.lunkr.sdkdemo.ui.phone.CMMainPhoneActivity;

public class CoreMailHelper {

    private static final String TAG = "CoreMailHelper";

    public static CoreMailHelper getInstance() {
        return InstanceInner.instance;
    }

    private static class InstanceInner {
        private static CoreMailHelper instance = new CoreMailHelper();
    }

    private AtomicBoolean mInit = new AtomicBoolean(false);

    private Class mainClass;
    private Class loginClass;
    private boolean isSSO;

    public void start(Application application) {
        if (!mInit.get()) {
            initSdk(application);
            mInit.set(true);
        }
        startAct(application);
    }

    private void startAct(Application application) {
        String isPad = PublicSPUtil.getInstance().isPad();
        LogUtil.d(TAG, "Splash isPad:" + isPad);
        String sid = MeManager.getSid();
        String uid = MeManager.getUid();
        Intent intent;
        if (!TextUtils.isEmpty(sid) && !TextUtils.isEmpty(uid)) {
            intent = new Intent(application, mainClass);
        } else {
            intent = new Intent(application, loginClass);
            intent.putExtra("need_login", true);
            intent.putExtra("cm_token", "sss");
        }
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        application.startActivity(intent);
    }

    private void initSdk(Application application) {


        isSSO = "sso".equals(SPUtil.getInstance().getString(SPUtil.LOGIN_TYPE, ""));
        loginClass = isSSO ? SSOActivity.class : StartActivity3.class;
//        mainClass = MailsActivity.class; // 邮件主界面， MailsActivity 为内置邮件界面， 如果客户定制邮件主界面，则该处写用户定制 Activity
//        mainClass = CMMainPhoneActivity.class; // 邮件主界面， MailsActivity 为内置邮件界面， 如果客户定制邮件主界面，则该处写用户定制 Activity
        mainClass = DrawerMainActivity.class; // 邮件主界面， MailsActivity 为内置邮件界面， 如果客户定制邮件主界面，则该处写用户定制 Activity
        // 也可以内置为demo 内的
        Manipulator.Builder builder = new Manipulator.Builder(application)
                .setStartActivityClass(loginClass) // 登录界面
                .setMainActivityClass(mainClass) // 主界面
                .ssoLogin() // 账号登录，  ssoLogin() 为单点登录
                .setAppFlavor(BuildConfig.FLAVOR);

        if (isSSO) {
            builder.ssoLogin();
        } else {
            builder.accountLogin();
        }
        builder.build();

        SPUtil spUtil = SPUtil.getInstance();
        String url = spUtil.getString(SPUtil.URL, null);
        String token = spUtil.getString(SPUtil.TOKEN, null);
        MeManager.setMainHost(url);
        MeManager.setToken(token);

        String isPad = PublicSPUtil.getInstance().isPad(); // 是否设置平板模式
        if (TextUtils.isEmpty(isPad)) {
            // 未设置过，通过密度判断当前设备是否为平板
            if (AppUtils.isPad(application)) {
                isPad = "pad";
            } else {
                isPad = "phone";
            }
        }

        if ("pad".equals(isPad)) {

            // 平板配置为 ToolBar 白色底色，ToolBar 上 icon 为黑色色图标

            MeManager.setBarBackgroundColor("#FFFFFF"); // toolbar背景色
            MeManager.setBarBorderBottomColor("#a2a2a2"); // toolbar背景边框色
            MeManager.setBarStatusBackgroundColor("#FFFFFF"); // Status bar 背景色
            MeManager.setBarForegroundColor("#000000"); // toolbar 前景色
            MeManager.setBarSearchHintTextColor("#666666"); // 搜索框 hint 颜色
            MeManager.setBarSearchTextColor("#000000"); // 搜索框文字颜色
        } else {
            // 手机模式，默认设置为空， 内部内置为ToolBar 蓝色底色， ToolBar 上 icon 为白色图标
            MeManager.setBarBackgroundColor(""); // toolbar背景色
            MeManager.setBarBorderBottomColor(""); // toolbar背景边框色9
            MeManager.setBarStatusBackgroundColor(""); // Status bar 背景色
            MeManager.setBarForegroundColor(""); // toolbar 前景色
            MeManager.setBarSearchHintTextColor(""); // 搜索框 hint 颜色
            MeManager.setBarSearchTextColor(""); // 搜索框文字颜色
        }
    }
}
